package com.divemotor.ventarepuestosinternet.dao;

import java.util.List;

import com.divemotor.ventarepuestosinternet.beans.adapter.CotizacionAdapter;
import com.divemotor.ventarepuestosinternet.beans.adapter.ElementoCotizacionAdapter;
import com.divemotor.ventarepuestosinternet.beans.form.CotizacionBeanForm;
import com.divemotor.ventarepuestosinternet.model.Cotizacion;
import com.divemotor.ventarepuestosinternet.model.EstadoCotizacion;
import com.divemotor.ventarepuestosinternet.model.Supervisor;
import com.divemotor.ventarepuestosinternet.model.Usuario;
import com.divemotor.ventarepuestosinternet.model.Vendedor;
import com.divemotor.ventarepuestosinternet.util.Paginacion;

public interface CotizacionDAO {

	Cotizacion guardar(Cotizacion cotizacion);
	List<CotizacionAdapter> buscar(CotizacionBeanForm cotizacionBeanForm);
	List<Cotizacion> listarPorUsuario(Integer idUsuario);
	Cotizacion obtenerPorId(Integer idCotizacion);
	List<ElementoCotizacionAdapter> obtenerElementosCotizacion(Integer idCotizacion);
	List<ElementoCotizacionAdapter> obtenerElementosCotizacionRepuesto(Integer idCotizacion);
	List<ElementoCotizacionAdapter> obtenerElementosCotizacionPromocion(Integer idCotizacion);
	List<ElementoCotizacionAdapter> obtenerDetalleRepuesto(Integer idCotizacion);
    List<ElementoCotizacionAdapter> obtenerDetallePromocion(Integer idCotizacion);
    List<CotizacionAdapter> obtenerCotizacionesAdapter();
	List<Cotizacion> listar();
	List<Cotizacion> listarPorSupervisor(Supervisor supervisor);
	List<EstadoCotizacion> obtenerEstadosCotizacionPorUsuarioSucursal(Usuario usuarioAutenticado);
	List<Vendedor> obtenerVendedoresPorUsuarioSucursal(Usuario usuarioAutenticado);
	int cantidadCotizaciones();
	void actualizar(Cotizacion cotizacion);
	int cantidadCotizaciones(CotizacionBeanForm cotizacionBean, boolean flagTipoPerfil);
	List<CotizacionAdapter> buscarAdapter(Paginacion paginacion, CotizacionBeanForm cotizacionBean, boolean flagTipoPerfil);
	List<CotizacionAdapter> buscarVendedorAdapter(Paginacion paginacion, CotizacionBeanForm cotizacionBeanForm);
	
}
